Installing Packages

library(pacman)
p_load(arules, arulesViz, ggplot2)

Read list of transactions

dataset <- read.transactions("./AssociationRules.csv", sep=" ")

Summary of dataset

Max quantity

summary(size(dataset))
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   7.000  10.000   9.806  12.000  25.000 

Make association rules

rules = apriori(data=dataset, parameter=list(support=0.01, confidence=0)) 
Apriori

Parameter specification:

Algorithmic control:

Absolute minimum support count: 100 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[98 item(s), 10000 transaction(s)] done [0.01s].
sorting and recoding items ... [89 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 5 done [0.03s].
writing ... [11524 rule(s)] done [0.00s].
creating S4 object  ... done [0.01s].

Summary rules

summary(rules)
set of 11524 rules

rule length distribution (lhs + rhs):sizes
   1    2    3    4    5 
  89 2952 7206 1272    5 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    2.00    3.00    2.84    3.00    5.00 

summary of quality measures:
    support          confidence        coverage            lift             count       
 Min.   :0.01000   Min.   :0.0108   Min.   :0.01000   Min.   : 0.6717   Min.   : 100.0  
 1st Qu.:0.01150   1st Qu.:0.1683   1st Qu.:0.03940   1st Qu.: 1.0076   1st Qu.: 115.0  
 Median :0.01400   Median :0.2490   Median :0.06330   Median : 1.1244   Median : 140.0  
 Mean   :0.01891   Mean   :0.2788   Mean   :0.09342   Mean   : 1.2284   Mean   : 189.1  
 3rd Qu.:0.01990   3rd Qu.:0.3596   3rd Qu.:0.11040   3rd Qu.: 1.2803   3rd Qu.: 199.0  
 Max.   :0.49480   Max.   :1.0000   Max.   :1.00000   Max.   :19.4205   Max.   :4948.0  

mining info:
inspect(rules)

More confidence rules

trules <- subset(rules, confidence >= 0.5)
summary(trules)
set of 1165 rules

rule length distribution (lhs + rhs):sizes
  2   3   4   5 
 62 753 348   2 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.000   3.000   3.000   3.249   4.000   5.000 

summary of quality measures:
    support          confidence        coverage           lift            count       
 Min.   :0.01000   Min.   :0.5000   Min.   :0.0100   Min.   : 1.011   Min.   : 100.0  
 1st Qu.:0.01110   1st Qu.:0.5283   1st Qu.:0.0193   1st Qu.: 1.093   1st Qu.: 111.0  
 Median :0.01350   Median :0.5644   Median :0.0237   Median : 1.192   Median : 135.0  
 Mean   :0.01816   Mean   :0.5863   Mean   :0.0321   Mean   : 1.589   Mean   : 181.6  
 3rd Qu.:0.01920   3rd Qu.:0.6143   3rd Qu.:0.0338   3rd Qu.: 1.424   3rd Qu.: 192.0  
 Max.   :0.18770   Max.   :1.0000   Max.   :0.3699   Max.   :19.420   Max.   :1877.0  

mining info:
inspect(trules)
# Some 10 sample
top_rules <- sample(rules, 10)
# High confidence rules
rules_conf <- sort(rules, by="confidence", decreasing=TRUE)
# High lift rules
rules_lift <- sort(rules, by="lift", decreasing=TRUE)
# Top 10 rules by confidence
top_rules_conf <- head(rules_conf, n=10)
# Top 10 rules by lift
top_rules_lift = head(rules_lift, n=10)

Plot of all finded rules

plot(rules, 
     method="scatterplot", 
     measure=c("support", "confidence"), 
     shading="lift",
     jitter=0.2
)

Plot of hight confidence rules

plot(trules, 
     method="scatterplot", 
     measure=c("support", "confidence"), 
     shading="lift",
     jitter=0.2
)

Compare support and lift

plot(rules, 
     method="scatterplot", 
     measure=c("support", "lift"), 
     shading="confidence",
     jitter=0.2
)

plot(trules, 
     method="scatterplot", 
     measure=c("support", "lift"), 
     shading="confidence",
     jitter=0.2
)

head(quality(trules))
plot(associa_rules, 
     method="scatterplot", 
     measure=c("support", "confidence"), 
     shading="lift",
     engine="htmlwidget"
)
plot: Too many rules supplied. Only plotting the best 1000 rules using measure lift (change parameter max if needed)To reduce overplotting, jitter is added! Use jitter = 0 to prevent jitter.
plot(associa_rules, 
     method="scatterplot", 
     measure=c("support", "lift"), 
     shading="confidence",
     engine="htmlwidget"
)
plot: Too many rules supplied. Only plotting the best 1000 rules using measure confidence (change parameter max if needed)To reduce overplotting, jitter is added! Use jitter = 0 to prevent jitter.
plot(top_rules_conf, method="paracoord")

plot(top_rules_lift, method="paracoord")

plot(top_rules_conf, method="matrix", measure="confidence")
Itemsets in Antecedent (LHS)
[1] "{item15,item30,item49}" "{item30,item49,item56}" "{item49,item56}"       
[4] "{item15,item49,item56}" "{item49,item56,item84}" "{item15,item49,item84}"
[7] "{item15,item56,item77}"
Itemsets in Consequent (RHS)
[1] "{item30}" "{item84}" "{item15}" "{item56}"

Matrix based plot

plot(top_rules_lift, method="matrix", measure="lift")
Itemsets in Antecedent (LHS)
 [1] "{item15,item30,item56}" "{item30,item56,item84}" "{item15,item30,item49}"
 [4] "{item15,item56}"        "{item15,item49}"        "{item30,item49,item84}"
 [7] "{item56,item84}"        "{item15,item30,item84}" "{item15,item30,item77}"
[10] "{item30,item77,item84}"
Itemsets in Consequent (RHS)
[1] "{item56}" "{item49}"

plot(top_rules_lift, method="grouped")

plot(top_rules_conf, method="graph",  engine="htmlwidget")
top_3_lift = head(top_rules_lift, n=3)

plot(top_3_lift, method="graph")

hight_trustly_rules <- subset(associa_rules, confidence > 0.8)

first_38_conf = head(sort(hight_trustly_rules, by="confidence", decreasing=TRUE), n=38)

plot(first_38_conf, 
     method="matrix", 
     shading=c("lift", "confidence"), 
     measure=c("lift", "confidence"), 
     control=list(reorder=FALSE)
)
Itemsets in Antecedent (LHS)
 [1] "{item15,item49,item56}" "{item49,item56,item84}" "{item49,item56}"       
 [4] "{item15,item49,item84}" "{item30,item49,item56}" "{item15,item30,item49}"
 [7] "{item15,item56,item77}" "{item15,item56,item84}" "{item49,item77,item84}"
[10] "{item16,item61,item77}" "{item20,item23}"        "{item16,item34,item77}"
[13] "{item15,item49}"        "{item5,item82,item99}"  "{item3,item84,item95}" 
[16] "{item13,item82,item99}" "{item23}"               "{item25,item34,item77}"
[19] "{item82,item99}"        "{item22,item3,item41}"  "{item55}"              
[22] "{item10,item44}"        "{item83}"               "{item23,item5}"        
[25] "{item30,item56,item77}" "{item15,item30,item56}" "{item10,item22,item41}"
[28] "{item30,item49,item84}" "{item20,item25,item41}" "{item16,item25,item77}"
[31] "{item30,item95,item96}"
Itemsets in Consequent (RHS)
 [1] "{item30}" "{item15}" "{item56}" "{item84}" "{item5}"  "{item13}" "{item10}"
 [8] "{item34}" "{item3}"  "{item77}" "{item92}"

LS0tCnRpdGxlOiAiQXNzb2NpYXRpb24gUnVsZXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KIyMjIEluc3RhbGxpbmcgUGFja2FnZXMgCmBgYHtyfQpsaWJyYXJ5KHBhY21hbikKcF9sb2FkKGFydWxlcywgYXJ1bGVzVml6LCBnZ3Bsb3QyKQpgYGAKCiMjIyBSZWFkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zCmBgYHtyfQpkYXRhc2V0IDwtIHJlYWQudHJhbnNhY3Rpb25zKCIuL0Fzc29jaWF0aW9uUnVsZXMuY3N2Iiwgc2VwPSIgIikKYGBgCgojIyBTdW1tYXJ5IG9mIGRhdGFzZXQKIyMjIE1heCBxdWFudGl0eQpgYGB7cn0Kc3VtbWFyeShzaXplKGRhdGFzZXQpKQpgYGAKCiMjIyBNb3N0IHBvcHVsYXIgaXRlbQpgYGB7cn0KaXRlbUZyZXF1ZW5jeVBsb3QoZGF0YXNldCwgdG9wTj0xMCkgCmBgYAoKIyMgTWFrZSBhc3NvY2lhdGlvbiBydWxlcwpgYGB7cn0KcnVsZXMgPSBhcHJpb3JpKGRhdGE9ZGF0YXNldCwgcGFyYW1ldGVyPWxpc3Qoc3VwcG9ydD0wLjAxLCBjb25maWRlbmNlPTApKSAKYGBgCgojIyMgU3VtbWFyeSBydWxlcwpgYGB7cn0Kc3VtbWFyeShydWxlcykKYGBgCmBgYHtyfQppbnNwZWN0KHJ1bGVzKQpgYGAKCiMjIyBNb3JlIGNvbmZpZGVuY2UgcnVsZXMKYGBge3J9CnRydWxlcyA8LSBzdWJzZXQocnVsZXMsIGNvbmZpZGVuY2UgPj0gMC41KQpgYGAKYGBge3J9CnN1bW1hcnkodHJ1bGVzKQpgYGAKYGBge3J9Cmluc3BlY3QodHJ1bGVzKQpgYGAKCgoKYGBge3J9CiMgU29tZSAxMCBzYW1wbGUKdG9wX3J1bGVzIDwtIHNhbXBsZShydWxlcywgMTApCiMgSGlnaCBjb25maWRlbmNlIHJ1bGVzCnJ1bGVzX2NvbmYgPC0gc29ydChydWxlcywgYnk9ImNvbmZpZGVuY2UiLCBkZWNyZWFzaW5nPVRSVUUpCiMgSGlnaCBsaWZ0IHJ1bGVzCnJ1bGVzX2xpZnQgPC0gc29ydChydWxlcywgYnk9ImxpZnQiLCBkZWNyZWFzaW5nPVRSVUUpCiMgVG9wIDEwIHJ1bGVzIGJ5IGNvbmZpZGVuY2UKdG9wX3J1bGVzX2NvbmYgPC0gaGVhZChydWxlc19jb25mLCBuPTEwKQojIFRvcCAxMCBydWxlcyBieSBsaWZ0CnRvcF9ydWxlc19saWZ0ID0gaGVhZChydWxlc19saWZ0LCBuPTEwKQpgYGAKCgojIyMgUGxvdCBvZiBhbGwgZmluZGVkIHJ1bGVzCmBgYHtyfQpwbG90KHJ1bGVzLCAKICAgICBtZXRob2Q9InNjYXR0ZXJwbG90IiwgCiAgICAgbWVhc3VyZT1jKCJzdXBwb3J0IiwgImNvbmZpZGVuY2UiKSwgCiAgICAgc2hhZGluZz0ibGlmdCIsCiAgICAgaml0dGVyPTAuMgopCmBgYAoKIyMjIFBsb3Qgb2YgaGlnaHQgY29uZmlkZW5jZSBydWxlcwpgYGB7cn0KcGxvdCh0cnVsZXMsIAogICAgIG1ldGhvZD0ic2NhdHRlcnBsb3QiLCAKICAgICBtZWFzdXJlPWMoInN1cHBvcnQiLCAiY29uZmlkZW5jZSIpLCAKICAgICBzaGFkaW5nPSJsaWZ0IiwKICAgICBqaXR0ZXI9MC4yCikKYGBgCgojIyMgQ29tcGFyZSBzdXBwb3J0IGFuZCBsaWZ0CmBgYHtyfQpwbG90KHJ1bGVzLCAKICAgICBtZXRob2Q9InNjYXR0ZXJwbG90IiwgCiAgICAgbWVhc3VyZT1jKCJzdXBwb3J0IiwgImxpZnQiKSwgCiAgICAgc2hhZGluZz0iY29uZmlkZW5jZSIsCiAgICAgaml0dGVyPTAuMgopCmBgYApgYGB7cn0KcGxvdCh0cnVsZXMsIAogICAgIG1ldGhvZD0ic2NhdHRlcnBsb3QiLCAKICAgICBtZWFzdXJlPWMoInN1cHBvcnQiLCAibGlmdCIpLCAKICAgICBzaGFkaW5nPSJjb25maWRlbmNlIiwKICAgICBqaXR0ZXI9MC4yCikKYGBgCmBgYHtyfQpoZWFkKHF1YWxpdHkodHJ1bGVzKSkKYGBgCgoKCmBgYHtyfQpwbG90KGFzc29jaWFfcnVsZXMsIAogICAgIG1ldGhvZD0ic2NhdHRlcnBsb3QiLCAKICAgICBtZWFzdXJlPWMoInN1cHBvcnQiLCAiY29uZmlkZW5jZSIpLCAKICAgICBzaGFkaW5nPSJsaWZ0IiwKICAgICBlbmdpbmU9Imh0bWx3aWRnZXQiCikKYGBgCmBgYHtyfQpwbG90KGFzc29jaWFfcnVsZXMsIAogICAgIG1ldGhvZD0ic2NhdHRlcnBsb3QiLCAKICAgICBtZWFzdXJlPWMoInN1cHBvcnQiLCAibGlmdCIpLCAKICAgICBzaGFkaW5nPSJjb25maWRlbmNlIiwKICAgICBlbmdpbmU9Imh0bWx3aWRnZXQiCikKYGBgCgpgYGB7cn0KcGxvdCh0b3BfcnVsZXNfY29uZiwgbWV0aG9kPSJwYXJhY29vcmQiKQpgYGAKCmBgYHtyfQpwbG90KHRvcF9ydWxlc19saWZ0LCBtZXRob2Q9InBhcmFjb29yZCIpCmBgYAoKYGBge3J9CnBsb3QodG9wX3J1bGVzX2NvbmYsIG1ldGhvZD0ibWF0cml4IiwgbWVhc3VyZT0iY29uZmlkZW5jZSIpCmBgYApNYXRyaXggYmFzZWQgcGxvdAoKYGBge3J9CnBsb3QodG9wX3J1bGVzX2xpZnQsIG1ldGhvZD0ibWF0cml4IiwgbWVhc3VyZT0ibGlmdCIpCmBgYAoKYGBge3J9CnBsb3QodG9wX3J1bGVzX2xpZnQsIG1ldGhvZD0iZ3JvdXBlZCIpCmBgYAoKYGBge3J9CnBsb3QodG9wX3J1bGVzX2NvbmYsIG1ldGhvZD0iZ3JhcGgiLCAgZW5naW5lPSJodG1sd2lkZ2V0IikKYGBgCmBgYHtyfQp0b3BfM19saWZ0ID0gaGVhZCh0b3BfcnVsZXNfbGlmdCwgbj0zKQoKcGxvdCh0b3BfM19saWZ0LCBtZXRob2Q9ImdyYXBoIikKYGBgCgpgYGB7cn0KaGlnaHRfdHJ1c3RseV9ydWxlcyA8LSBzdWJzZXQoYXNzb2NpYV9ydWxlcywgY29uZmlkZW5jZSA+IDAuOCkKCmZpcnN0XzM4X2NvbmYgPSBoZWFkKHNvcnQoaGlnaHRfdHJ1c3RseV9ydWxlcywgYnk9ImNvbmZpZGVuY2UiLCBkZWNyZWFzaW5nPVRSVUUpLCBuPTM4KQoKcGxvdChmaXJzdF8zOF9jb25mLCAKICAgICBtZXRob2Q9Im1hdHJpeCIsIAogICAgIHNoYWRpbmc9YygibGlmdCIsICJjb25maWRlbmNlIiksIAogICAgIG1lYXN1cmU9YygibGlmdCIsICJjb25maWRlbmNlIiksIAogICAgIGNvbnRyb2w9bGlzdChyZW9yZGVyPUZBTFNFKQopCmBgYAoKCgoKCgoK